iT邦幫忙

2022 iThome 鐵人賽

DAY 9
1

Mapping

map()可以讓你對每個元素使用函數去替換舊的函數

void main() {
  var numbersByTwo = const [1, -2, 3, 42].map((number) => number * 2);
  print('Numbers: $numbersByTwo');
}

output

Numbers: (2, -4, 6, 84)

使用map()讓元素都變兩倍從(1, -2, 3, 42)變成(2, -4, 6, 84)

Asynchronous programming: futures, async, await

非同步操作可以讓你在等待長期工作的結果的同時執行其他工作
以下是常使用非同步的情境:

  • 通過網路取得數據
  • 寫入資料庫
  • 從檔案讀取資料

What is a future?

Future 表示非同步操作的結果,可以有兩種狀態:uncompleted 或 completed
uncompleted future: future正在等待函數的非同步操作完成或拋出錯誤。
completed future: 如果非同步操作成功,future 以一個值結束,或著它會丟出error。

Future<void> fetchUserOrder() {
  // Imagine that this function is fetching user info from another service or database.
  return Future.delayed(const Duration(seconds: 2), () => print('Large Latte'));
}

void main() {
  fetchUserOrder();
  print('Fetching user order...');
}

output

Fetching user order...
Large Latte

我們可以看到使用Future.delayed()並加上秒數可以等待2秒後再print值,所以會造成先print出Fetching user order,然後兩秒到了才會print出Large Latte

參考資料:
https://dart.dev/codelabs/async-await
https://medium.flutterdevs.com/exploring-asynchronous-programming-in-dart-flutter-25f341af32f


上一篇
dart&flutter學習之旅-Day08
下一篇
dart&flutter學習之旅-Day10
系列文
dart&flutter學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言